perm filename MIX999[MIX,SYS] blob sn#020789 filedate 1972-02-29 generic text, type T, neo UTF8
COMMENT ⊗   VALID 00005 PAGES 
RECORD PAGE   DESCRIPTION
 00001 00001
 00002 00002		These tables are used to convert ASCII-coded characters
 00005 00003	INIT:	MOVE	P, [IOWD 40, PDL]
 00006 00004	BEGIN NEWS
 00010 00005		XLIST		LITERALS FOLLOW
 00011 ENDMK
⊗;
COMMENT	⊗	These tables are used to convert ASCII-coded characters
		to MIX-coded characters and vice-versa.
		"!" is used to indicate a character which cannot be converted.
		"!" will be represented in MIX-code by 56.
	⊗

ASCMIX:
	REPEAT	40	{=56}

	=00	; <SPACE>
	=56
	=56
	=56
	=49	; $
	=56
	=56
	=55	; '

	=42	; (
	=43	; )
	=46	; *
	=44	; +
	=41	; ,
	=45	; -
	=40	; .
	=47	; /

	=30	; 0
	=31	; 1
	=32	; 2
	=33	; 3
	=34	; 4
	=35	; 5
	=36	; 6
	=37	; 7

	=38	; 8
	=39	; 9
	=54	; :
	=53	; ;
	=50	; <
	=48	; =
	=51	; >
	=56

	=52	; @
	=01	; A
	=02	; B
	=03	; C
	=04	; D
	=05	; E
	=06	; F
	=07	; G

	=08	; H
	=09	; I
	=11	; J
	=12	; K
	=13	; L
	=14	; M
	=15	; N
	=16	; O

	=17	; P
	=18	; Q
	=19	; R
	=22	; S
	=23	; T
	=24	; U
	=25	; V
	=26	; W

	=27	; X
	=28	; Y
	=29	; Z
	=56
	=56
	=56
	=56
	=56

	=56
	=01	; a
	=02	; b
	=03	; c
	=04	; d
	=05	; e
	=06	; f
	=07	; g

	=08	; h
	=09	; i
	=11	; j
	=12	; k
	=13	; l
	=14	; m
	=15	; n
	=16	; o

	=17	; p
	=18	; q
	=19	; r
	=22	; s
	=23	; t
	=24	; u
	=25	; v
	=26	; w

	=27	; x
	=28	; y
	=29	; z
	=56
	=56
	=56
	=56
	=56

MIXASC:
	" "
	"A"
	"B"
	"C"
	"D"
	"E"
	"F"
	"G"
	"H"
	"I"
	"!"
	"J"
	"K"
	"L"
	"M"
	"N"
	"O"
	"P"
	"Q"
	"R"
	"!"
	"!"
	"S"
	"T"
	"U"
	"V"
	"W"
	"X"
	"Y"
	"Z"

	"0"
	"1"
	"2"
	"3"
	"4"
	"5"
	"6"
	"7"
	"8"
	"9"

	"."
	","
	"("
	")"
	"+"
	"-"
	"*"
	"/"
	"="
	"$"

	"<"
	">"
	"@"
	";"
	":"
	"'"
	"!"
	"!"
	"!"
	"!"

	"!"
	"!"
	"!"
	"!"
INIT:	MOVE	P, [IOWD 40, PDL]
	PUSHJ	P,QNEWS		;TYPE OUT ANY MESSAGES
	MOVNI	10, 1
	GETLIN	10
	TLNN	10,420000	;IS IT A DISPLAY OF SOME SORT
	JRST	NOTDPY
	TLNE	10,400000
	JRST	ISIII		;IT'S A III
	DPYPOS	-150
	DPYSIZ	4000+4
	MOVEI	PC,MC0000
	PUSHJ	P,REWRIT	;WRITE DD SCREEN
	SETOM	DDSW#		;INDICATE DD
	JRST	NOTDPY
ISIII:	SETZM	DDSW
	DPYPOS	-250
	DPYSIZ	3000+4
	UPGIOT	DPYHED
NOTDPY:	setzb	0, 1
	setzb	2, 3
	setzb	4, 5
	setzb	6, 7
	setzb	10, 11
	setzb	12, 13
	setzb	14, 15
	MOVEI	PC,MC0000	;*RES* INITIALIZE PROGRAM COUNTER
	jrst	button
BEGIN NEWS

↑QNEWS:	MOVEM	4,ACSV+4	;SAVE REGISTERS 0-4
	MOVEI	4,ACSV
	BLT	4,ACSV+3
	INIT	6,10		;OPEN DISK IN IMAGE MODE
	SIXBIT	/DSK/
	NWSBF
	JRST	QN3		;NO SWEAT IF ERROR
	HLLZS	NWSLK+1		;CLEAR OUT RIGHT HALF OF EXT
	MOVE	0,[SIXBIT /MIXSYS/]
	MOVEM	0,NWSLK+3	;FIX UP PPN IN LOOKUP BLOCK
	LOOKUP	6,NWSLK		;LOOK FOR FILE
	JRST	QN4		;NO NEWS IS GOOD NEWS

;SEE IF HE REALLY WANTS TO READ THE NEWS

	LDB	1,[POINT 11,NWSLK+2,23]  ;GET TIME OF CREATION
	IDIVI	1,=60
	MOVE	0,DATE(1)		;GET HOUR
	MOVEM	0,MSTIME
	IDIVI	2,=10			;GET MINUTES
	ADDI	2,60
	ADDI	3,60
	DPB	2,[POINT 7,MSTIME+1,13]
	DPB	3,[POINT 7,MSTIME+1,20]
	LDB	1,[POINT 12,NWSLK+2,35]	;GET DATE OF CREATION
	IDIVI	1,=31
	MOVE	0,DATE+1(2)		;GET DAY OF WEEK
	MOVEM	0,MSDATE
	IDIVI	1,=12
	MOVE	0,MONTH(2)		;GET MONTH
	MOVEM	0,MSDATE+1
	MOVE	0,YEAR(1)		;GET YEAR
	MOVEM	0,MSDATE+2
	OUTSTR	MESSAG			;SEE IF HE WANTS THE NEWS
	INCHRW	0			;GET HIS ANSWER
	CAIN	0,"Y"			;IS IT Y
	JRST	READIT
	CAIE	0,"y"			;IS IT y
	JRST	QN4			;NO

READIT:	OUTSTR	[ASCIZ /
/]
	MOVE	0,[POINT 7,LINBUF]	;COLLECT A LINE AT A TIME
QN1:	PUSHJ	P,QIN		;GET A WORD
	TRNN	3,1		;IS IT A LINE NUMBER
	JRST	.+3		;NO
	PUSHJ	P,QIN		;GET ANOTHER ONE
	IBP	2		;MOVE PAST INITIAL TAB
QN1B:	ILDB	1,2		;GET A CHAR
	JUMPE	1,QN1		;GO BACK IF OUT OF CHARS
	IDPB	1,0		;WRITE IT OUT
	CAIE	1,12		;IS THAT THE LF AT THE END OF THE LINE
	JRST	QN1B		;NO
	MOVEI	1,0
	IDPB	1,0		;MAKE THE LINE AN ASCIZ STRING
	OUTSTR	LINBUF		;WRITE IT OUT
	MOVE	0,[POINT 7,LINBUF]
	JRST	QN1		;LOOK SOME MORE
QIN:	SOSG	NWSBF+2		;SEE IF ANY MORE CHARS THIS BUFFER
	IN	6,		;READ AGAIN
	JRST	.+4		;ALL OK
	STATZ	6,20000		;CHECK FOR EOF
	JRST	QN1A		;EOF
	JRST	QN5		;OTHER PROBLEMS
	ILDB	3,NWSBF+1	;PICK UP NEXT WORD
	JUMPE	3,QIN		;IGNORE NULL WORDS
	SETZ	4,		;ZERO OUT 4
	MOVE	2,[POINT 7,3]	; SO THAT 2 POINTS TO ASCIZ IN 3
	POPJ	P,
QN1A:	POP	P,(P)
QN2:	RELEAS	6,
	INSKIP			;JUST IS CASE HE SAID ↑0
	JFCL
	OUTSTR	[ASCIZ /
Type CR to start MIX/]
	INCHWL	1		;FIND LF
	CAIE	1,12
	JRST	.-2
QN3:	HRLZI	4,ACSV		;RESTORE REGS
	BLT	4,4
	POPJ	P,		;RETURN
QN4:	RELEAS	6,		;JUST RELEASE CHANNEL AND RETURN
	JRST	QN3
QN5:	POP	P,(P)
	OUTSTR	[ASCIZ /
DSK error in reading news/]
	JRST	QN2

NWSLK:	SIXBIT	/NEWS/
	SIXBIT	/MIX/
	0
	SIXBIT	/MIXSYS/
NWSBF:	BLOCK	3
ACSV:	BLOCK	5
LINBUF:	BLOCK	25
MESSAG:	ASCII	/Read the news as of /
MSTIME:	ASCII	/     /
	ASCII	/:00  /
MSDATE:	ASCII	/     /
	ASCII	/     /
	ASCII	/     /
	ASCIZ	/? /

BEND NEWS
	XLIST		;LITERALS FOLLOW
	LIT
	LIST	
	END	INIT